package sv.com.renacempleo.web.controller.red;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import sv.com.renacempleo.dto.red.RedDiscapacidadFisicoPsiquico;
import sv.com.renacempleo.dto.red.RedDiscapacidadTrabajo;
import sv.com.renacempleo.exception.WebException;
import sv.com.renacempleo.web.controller.BaseController;
import sv.com.renacempleo.web.util.DBContext;

@Controller
@RequestMapping("/red/discapacidad")
public class RedDiscapacidadController extends BaseController{

	private static final long serialVersionUID = 8522819316043211365L;

	@RequestMapping(value = "/findById", method = {RequestMethod.GET, RequestMethod.POST})
	public void findById(@RequestParam(required = false) Long redDemandanteId, HttpServletResponse response) {
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			result.put("redDemandanteId", redDemandanteId);
			if(redDemandanteId != null && redDemandanteId > 0){
				result.put("redTrabajo", DBContext.getRedDiscapacidadDao().findRedDiscapcidadTrabajoByRedDemandanteIdAsMap(redDemandanteId));
				result.put("redFisicoPsiquico", DBContext.getRedDiscapacidadDao().findRedDiscapacidadFisicoPsiquicoByRedDemandanteIdAsMap(redDemandanteId));
				result.put("redAyudaTecnica",
					createCheckboxGroup(
						new Object[][]{
							new Object[]{"1", "Bast\u00F3n"},
							new Object[]{"2", "Pr\u00F3tesis"},
							new Object[]{"3", "Anteojos"},
							new Object[]{"4", "Muletas"},
							new Object[]{"5", "Silla de Ruedas"},
							new Object[]{"6", "Audifonos"},
							new Object[]{"7", "Ortesis"},
							new Object[]{"8", "Otro"}
						}, 
						"redAyudaTecnica.redAyudaTecnicaTipo", 
						DBContext.getRedDiscapacidadDao().findRedDiscapacidadAyudaTecnicaByRedDemandateId(redDemandanteId)
					)
				);
				
			}
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedFisicoPsiquico", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedFisicoPsiquico(@ModelAttribute("redFisicoPsiquico") RedDiscapacidadFisicoPsiquico redFisicoPsiquico, HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedDiscapacidadService().saveRedDiscapacidadFisicoPsiquico(redFisicoPsiquico);
			result.put("redFisicoPsiquicoId", redFisicoPsiquico.getRedFisicoPsiquicoId());
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}
	
	@RequestMapping(value = "/saveRedDiscapacidadTrabajo", method = {RequestMethod.GET, RequestMethod.POST})
	public void saveRedDiscapacidadTrabajo(
			@ModelAttribute("redTrabajo") RedDiscapacidadTrabajo redTrabajo,
			@RequestParam(required = false, value = "redAyudaTecnica") String[] redAyudaTecnicas,
			HttpServletResponse response){
		Map<String, Object> result = new HashMap<String, Object>();
		try{
			DBContext.getRedDiscapacidadService().saveRedDiscapacidadAyudaTecnicaDatos(redTrabajo, redAyudaTecnicas);
			result.put("redTrabajoId", redTrabajo.getRedTrabajoId());
			result.put(MESSAGE, "Datos Actualizados");
			result.put(SUCCESS, true);
		}catch(WebException e){
			logger.error(e, e);
			result.put(MESSAGE, e.getMessage());
			result.put(FAILURE, true);
		}catch(Exception e){
			logger.error(e, e);
			result.put(MESSAGE, "Problemas a tratar de cargar la informaci\u00F3n");
			result.put(FAILURE, true);
		}
		serializeObject(result, response);
	}	
}
